﻿using System;
using System.Collections.Generic;

namespace TaskKernel.Domain.Services.Action
{
    public interface ITaskAction
    {
        bool SetExpirationDate(Task task, DateTime? date, Account logonAccount);
        bool SetTag(Task task, string tag, Account logonAccount);
        bool DeleteParticipant(Task task, IEnumerable<Account> participant, Account logonAccount);
        bool AddParticipant(Task task, IEnumerable<Account> participants, Account logonAccount);
        bool AddComment(Task task, string comment, Account logonAccount);
        bool AddFile(Task task, File file, Account logonAccount);
        bool SetDepartment(Task task, Department department, Account logonAccount);
        bool ForceCloseTask(Task task, Account logonAccount);
        bool RequestCloseTask(Task task, Account logonAccount);
        bool SetPercentComplete(Task task, int percentComplete, Account logonAccount);
        bool CloseTask(Task task, Account logonAccount);
        bool UnCloseTask(Task task, Account logonAccount);
        bool SetPriority(Task task, TaskPriority priority);
        bool AddReminder(Task task, DateTime datetime, string note, Account logonAccount);
        bool DeleteReminder(Task task, Account logonAccount);
        bool SetExecutor(Task task, Account executor, Account logonAccount);
        bool ViewTask(Task task, Account logonAccount);
        bool ChangeTaskName(Task task, string taskName, Account currentAccount);
        bool StartWorkingPeriodTrigger(Task task, Account currentAccount);
        IEnumerable<File> LoadFiles(Task task);
        void SetRating(Task task, Account currentAccount, int value, string text, string role);
    }
}